home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / thinkref / archive / THINKPascalUH2.1.sea / THINKPas Univ Hdr 2.1 / Interfaces / CMApplication.p < prev    next >
Text File  |  1995-09-14  |  26KB  |  895 lines

  1. { Converted with MPW2TPas Tuesday, September 12, 1995 5:23:44 PM }
  2. {}
  3. {     File:        CMApplication.p}
  4. { }
  5. {     Contains:    Color Matching Interfaces}
  6. { }
  7. {     Version:    Technology:    ColorSync 2.0}
  8. {                 Package:    Universal Interfaces 2.1 in “MPW Latest” on ETO #18}
  9. { }
  10. {     Copyright:    © 1984-1995 by Apple Computer, Inc.}
  11. {                 All rights reserved.}
  12. { }
  13. {     Bugs?:        If you find a problem with this file, use the Apple Bug Reporter}
  14. {                 stack.  Include the file and version information (from above)}
  15. {                 in the problem description and send to:}
  16. {                     Internet:    apple.bugs@applelink.apple.com}
  17. {                     AppleLink:    APPLE.BUGS}
  18. { }
  19. {}
  20.  
  21. unit CMApplication;
  22. interface
  23.  
  24.  
  25. {$IFC UNDEFINED __CMAPPLICATION__}
  26. {$SETC __CMAPPLICATION__ := 1}
  27.  
  28.     uses
  29.         ConditionalMacros, Types, Quickdraw, Files, Dialogs, Printing, CMICCProfile;
  30.  
  31. { $PUSH}
  32. { $ALIGN MAC68K}
  33. { $LibExport+}
  34.  
  35.     const
  36.         gestaltColorSync20 = $0200;
  37.  
  38.         kDefaultCMMSignature = 'appl';
  39.  
  40. { Macintosh 68K trap word }
  41.         cmTrap = $ABEE;
  42.  
  43. { PicComment IDs }
  44.         cmBeginProfile = 220;
  45.         cmEndProfile = 221;
  46.         cmEnableMatching = 222;
  47.         cmDisableMatching = 223;
  48.         cmComment = 224;
  49.  
  50. { PicComment selectors for cmComment }
  51.         cmBeginProfileSel = 0;
  52.         cmContinueProfileSel = 1;
  53.         cmEndProfileSel = 2;
  54.  
  55. { Defines for version 1.0 CMProfileSearchRecord.fieldMask }
  56.         cmMatchCMMType = $00000001;
  57.         cmMatchApplProfileVersion = $00000002;
  58.         cmMatchDataType = $00000004;
  59.         cmMatchDeviceType = $00000008;
  60.         cmMatchDeviceManufacturer = $00000010;
  61.         cmMatchDeviceModel = $00000020;
  62.         cmMatchDeviceAttributes = $00000040;
  63.         cmMatchFlags = $00000080;
  64.         cmMatchOptions = $00000100;
  65.         cmMatchWhite = $00000200;
  66.         cmMatchBlack = $00000400;
  67.  
  68. { Defines for version 2.0 CMSearchRecord.searchMask }
  69.         cmMatchAnyProfile = $00000000;
  70.         cmMatchProfileCMMType = $00000001;
  71.         cmMatchProfileClass = $00000002;
  72.         cmMatchDataColorSpace = $00000004;
  73.         cmMatchProfileConnectionSpace = $00000008;
  74.         cmMatchManufacturer = $00000010;
  75.         cmMatchModel = $00000020;
  76.         cmMatchAttributes = $00000040;
  77.         cmMatchProfileFlags = $00000080;
  78.  
  79. { Result codes }
  80. { General Errors }
  81.         cmProfileError = -170;
  82.         cmMethodError = -171;
  83.         cmMethodNotFound = -175;                            { CMM not present }
  84.         cmProfileNotFound = -176;                            { Responder error }
  85.         cmProfilesIdentical = -177;                            { Profiles the same }
  86.         cmCantConcatenateError = -178;                            { Profile can't be concatenated }
  87.         cmCantXYZ = -179;                            { CMM cant handle XYZ space }
  88.         cmCantDeleteProfile = -180;                            { Responder error }
  89.         cmUnsupportedDataType = -181;                            { Responder error }
  90.         cmNoCurrentProfile = -182;                            { Responder error }
  91. { Profile Access Errors }
  92.         cmElementTagNotFound = -4200;
  93.         cmIndexRangeErr = -4201;                        { Index out of range }
  94.         cmCantDeleteElement = -4202;
  95.         cmFatalProfileErr = -4203;
  96.         cmInvalidProfile = -4204;                        { A Profile must contain a 'cs1 ' tag to be valid }
  97.         cmInvalidProfileLocation = -4205;                        { Operation not supported for this profile location }
  98. { Profile Search Errors }
  99.         cmInvalidSearch = -4206;                        { Bad Search Handle }
  100.         cmSearchError = -4207;
  101.         cmErrIncompatibleProfile = -4208;
  102. { Other ColorSync Errors }
  103.         cmInvalidColorSpace = -4209;                        { Profile colorspace does not match bitmap type }
  104.         cmInvalidSrcMap = -4210;                        { Source pix/bit map was invalid }
  105.         cmInvalidDstMap = -4211;                        { Destination pix/bit map was invalid }
  106.         cmNoGDevicesError = -4212;                        { Begin/End Matching -- no gdevices available }
  107.         cmInvalidProfileComment = -4213;                        { Bad Profile comment during drawpicture }
  108. { Color Conversion Errors }
  109.         cmRangeOverFlow = -4214;                        { One or more output color value overflows in color conversion }
  110. {                                                        all input color values will still be converted, and the overflown }
  111. {                                                        will be clipped }
  112. { Other Profile Access Errors }
  113.         cmCantCopyModifiedV1Profile = -4215;                        { It is illegal to copy version 1 profiles that  }
  114. {                                                        have been modified }
  115.  
  116. { deviceType values for ColorSync 1.0 Device Profile access }
  117.         cmSystemDevice = 'sys ';
  118.         cmGDevice = 'gdev';
  119.  
  120. { Commands for CMFlattenUPP(…) }
  121.         cmOpenReadSpool = 1;
  122.         cmOpenWriteSpool = 2;
  123.         cmReadSpool = 3;
  124.         cmWriteSpool = 4;
  125.         cmCloseSpool = 5;
  126.  
  127. { Flags for PostScript-related functions }
  128.         cmPS7bit = 1;
  129.         cmPS8bit = 2;
  130.  
  131.  
  132.     type
  133.         CMProfileRef = Ptr;
  134.  
  135. { Abstract data type for Profile search result }
  136.         CMProfileSearchRef = Ptr;
  137.  
  138. { Abstract data type for BeginMatching(…) reference }
  139.         CMMatchRef = Ptr;
  140.  
  141. { Abstract data type for ColorWorld reference }
  142.         CMWorldRef = Ptr;
  143.  
  144. { Caller-supplied progress function for Bitmap & PixMap matching routines }
  145. { Caller-supplied filter function for Profile search }
  146.         CMFlattenProcPtr = ProcPtr;  { FUNCTION CMFlatten(command: LONGINT; VAR size: LONGINT; data: UNIV Ptr; refCon: UNIV Ptr): OSErr; }
  147.         CMBitmapCallBackProcPtr = ProcPtr;  { FUNCTION CMBitmapCallBack(progress: LONGINT; refCon: UNIV Ptr): BOOLEAN; }
  148.         CMProfileFilterProcPtr = ProcPtr;  { FUNCTION CMProfileFilter(prof: CMProfileRef; refCon: UNIV Ptr): BOOLEAN; }
  149.         CMFlattenUPP = UniversalProcPtr;
  150.         CMBitmapCallBackUPP = UniversalProcPtr;
  151.         CMProfileFilterUPP = UniversalProcPtr;
  152.  
  153.     const
  154.         uppCMFlattenProcInfo = $00003FE0; { FUNCTION (4 byte param, 4 byte param, 4 byte param, 4 byte param): 2 byte result; }
  155.         uppCMBitmapCallBackProcInfo = $000003D0; { FUNCTION (4 byte param, 4 byte param): 1 byte result; }
  156.         uppCMProfileFilterProcInfo = $000003D0; { FUNCTION (4 byte param, 4 byte param): 1 byte result; }
  157.  
  158.     function NewCMFlattenProc (userRoutine: CMFlattenProcPtr): CMFlattenUPP;
  159.     {$IFC NOT GENERATINGCFM }
  160.     inline
  161.         $2E9F;
  162.     {$ENDC}
  163.  
  164.     function NewCMBitmapCallBackProc (userRoutine: CMBitmapCallBackProcPtr): CMBitmapCallBackUPP;
  165.     {$IFC NOT GENERATINGCFM }
  166.     inline
  167.         $2E9F;
  168.     {$ENDC}
  169.  
  170.     function NewCMProfileFilterProc (userRoutine: CMProfileFilterProcPtr): CMProfileFilterUPP;
  171.     {$IFC NOT GENERATINGCFM }
  172.     inline
  173.         $2E9F;
  174.     {$ENDC}
  175.  
  176.     function CallCMFlattenProc (command: LONGINT; var size: LONGINT; data: univ Ptr; refCon: univ Ptr; userRoutine: CMFlattenUPP): OSErr;
  177.     {$IFC NOT GENERATINGCFM}
  178.     inline
  179.         $205F, $4E90;
  180.     {$ENDC}
  181.  
  182.     function CallCMBitmapCallBackProc (progress: LONGINT; refCon: univ Ptr; userRoutine: CMBitmapCallBackUPP): BOOLEAN;
  183.     {$IFC NOT GENERATINGCFM}
  184.     inline
  185.         $205F, $4E90;
  186.     {$ENDC}
  187.  
  188.     function CallCMProfileFilterProc (prof: CMProfileRef; refCon: univ Ptr; userRoutine: CMProfileFilterUPP): BOOLEAN;
  189.     {$IFC NOT GENERATINGCFM}
  190.     inline
  191.         $205F, $4E90;
  192.     {$ENDC}
  193.  
  194.     type
  195.         CMError = LONGINT;
  196.  
  197. { For 1.0 and 2.0 profile header variants }
  198. { CMAppleProfileHeader }
  199.         CMAppleProfileHeader = record
  200.                 case INTEGER of
  201.                     0: (
  202.                             cm1: CMHeader;
  203.                     );
  204.                     1: (
  205.                             cm2: CM2Header;
  206.                     );
  207.             end;
  208.  
  209. { Param for CWConcatColorWorld(…) }
  210.         CMConcatProfileSet = record
  211.                 keyIndex: INTEGER;                                { Zero-based }
  212.                 count: INTEGER;                                { Min 1 }
  213.                 profileSet: array[0..0] of CMProfileRef;            { Variable. Ordered from Source -> Dest }
  214.             end;
  215.  
  216. { ColorSync color data types }
  217.         CMRGBColor = record
  218.                 red: INTEGER;                                { 0..65535 }
  219.                 green: INTEGER;
  220.                 blue: INTEGER;
  221.             end;
  222.  
  223.         CMCMYKColor = record
  224.                 cyan: INTEGER;                                { 0..65535 }
  225.                 magenta: INTEGER;
  226.                 yellow: INTEGER;
  227.                 black: INTEGER;
  228.             end;
  229.  
  230.         CMCMYColor = record
  231.                 cyan: INTEGER;                                { 0..65535 }
  232.                 magenta: INTEGER;
  233.                 yellow: INTEGER;
  234.             end;
  235.  
  236.         CMHLSColor = record
  237.                 hue: INTEGER;                                { 0..65535. Fraction of circle. Red at 0 }
  238.                 lightness: INTEGER;                                { 0..65535 }
  239.                 saturation: INTEGER;                                { 0..65535 }
  240.             end;
  241.  
  242.         CMHSVColor = record
  243.                 hue: INTEGER;                                { 0..65535. Fraction of circle. Red at 0 }
  244.                 saturation: INTEGER;                                { 0..65535 }
  245.                 value: INTEGER;                                { 0..65535 }
  246.             end;
  247.  
  248.         CMLabColor = record
  249.                 L: INTEGER;                                { 0..65535 maps to 0..100 }
  250.                 a: INTEGER;                                { 0..65535 maps to -128..127.996 }
  251.                 b: INTEGER;                                { 0..65535 maps to -128..127.996 }
  252.             end;
  253.  
  254.         CMLuvColor = record
  255.                 L: INTEGER;                                { 0..65535 maps to 0..100 }
  256.                 u: INTEGER;                                { 0..65535 maps to -128..127.996 }
  257.                 v: INTEGER;                                { 0..65535 maps to -128..127.996 }
  258.             end;
  259.  
  260.         CMYxyColor = record
  261.                 capY: INTEGER;                                { 0..65535 maps to 0..1 }
  262.                 x: INTEGER;                                { 0..65535 maps to 0..1 }
  263.                 y: INTEGER;                                { 0..65535 maps to 0..1 }
  264.             end;
  265.  
  266.         CMGrayColor = record
  267.                 gray: INTEGER;                                { 0..65535 }
  268.             end;
  269.  
  270.         CMMultichannel5Color = record
  271.                 components: array[0..4] of SInt8; { unsigned char }
  272.  { 0..255 }
  273.             end;
  274.  
  275.         CMMultichannel6Color = record
  276.                 components: array[0..5] of SInt8; { unsigned char }
  277.  { 0..255 }
  278.             end;
  279.  
  280.         CMMultichannel7Color = record
  281.                 components: array[0..6] of SInt8; { unsigned char }
  282.  { 0..255 }
  283.             end;
  284.  
  285.         CMMultichannel8Color = record
  286.                 components: array[0..7] of SInt8; { unsigned char }
  287.  { 0..255 }
  288.             end;
  289.  
  290.         CMColor = record
  291.                 case INTEGER of
  292.                     0: (
  293.                             rgb: CMRGBColor;
  294.                     );
  295.                     1: (
  296.                             hsv: CMHSVColor;
  297.                     );
  298.                     2: (
  299.                             hls: CMHLSColor;
  300.                     );
  301.                     3: (
  302.                             XYZ: CMXYZColor;
  303.                     );
  304.                     4: (
  305.                             Lab: CMLabColor;
  306.                     );
  307.                     5: (
  308.                             Luv: CMLuvColor;
  309.                     );
  310.                     6: (
  311.                             Yxy: CMYxyColor;
  312.                     );
  313.                     7: (
  314.                             cmyk: CMCMYKColor;
  315.                     );
  316.                     8: (
  317.                             cmy: CMCMYColor;
  318.                     );
  319.                     9: (
  320.                             gray: CMGrayColor;
  321.                     );
  322.                     10: (
  323.                             mc5: CMMultichannel5Color;
  324.                     );
  325.                     11: (
  326.                             mc6: CMMultichannel6Color;
  327.                     );
  328.                     12: (
  329.                             mc7: CMMultichannel7Color;
  330.                     );
  331.                     13: (
  332.                             mc8: CMMultichannel8Color;
  333.                     );
  334.             end;
  335.  
  336.         CMProfileSearchRecord = record
  337.                 header: CMHeader;
  338.                 fieldMask: LONGINT;
  339.                 reserved: array[0..1] of LONGINT;
  340.             end;
  341.  
  342.         CMProfileSearchRecordPtr = ^CMProfileSearchRecord;
  343.         CMProfileSearchRecordHandle = ^CMProfileSearchRecordPtr;
  344.  
  345. { Search definition for 2.0 }
  346.         CMSearchRecord = record
  347.                 CMMType: OSType;
  348.                 profileClass: OSType;
  349.                 dataColorSpace: OSType;
  350.                 profileConnectionSpace: OSType;
  351.                 deviceManufacturer: LONGINT;
  352.                 deviceModel: LONGINT;
  353.                 deviceAttributes: array[0..1] of LONGINT;
  354.                 profileFlags: LONGINT;
  355.                 searchMask: LONGINT;
  356.                 filter: CMProfileFilterUPP;
  357.             end;
  358.  
  359. { GetCWInfo structures }
  360.         CMMInfoRecord = record
  361.                 CMMType: OSType;
  362.                 CMMVersion: LONGINT;
  363.             end;
  364.  
  365.         CMCWInfoRecord = record
  366.                 cmmCount: LONGINT;
  367.                 cmmInfo: array[0..1] of CMMInfoRecord;
  368.             end;
  369.  
  370.  
  371.     const
  372.         cmNoColorPacking = $0000;
  373.         cmAlphaSpace = $0080;
  374.         cmWord5ColorPacking = $0500;
  375.         cmLong8ColorPacking = $0800;
  376.         cmLong10ColorPacking = $0a00;
  377.         cmAlphaFirstPacking = $1000;
  378.         cmOneBitDirectPacking = $0b00;
  379.  
  380.         cmNoSpace = 0;
  381.         cmRGBSpace = 1;
  382.         cmCMYKSpace = 2;
  383.         cmHSVSpace = 3;
  384.         cmHLSSpace = 4;
  385.         cmYXYSpace = 5;
  386.         cmXYZSpace = 6;
  387.         cmLUVSpace = 7;
  388.         cmLABSpace = 8;
  389.         cmReservedSpace1 = 9;
  390.         cmGraySpace = 10;
  391.         cmReservedSpace2 = 11;
  392.         cmGamutResultSpace = 12;
  393.         cmRGBASpace = $81;
  394.         cmGrayASpace = $8A;
  395.         cmRGB16Space = $501;
  396.         cmRGB32Space = $801;
  397.         cmARGB32Space = $1881;
  398.         cmCMYK32Space = $802;
  399.         cmHSV32Space = $A03;
  400.         cmHLS32Space = $A04;
  401.         cmYXY32Space = $A05;
  402.         cmXYZ32Space = $A06;
  403.         cmLUV32Space = $A07;
  404.         cmLAB32Space = $A08;
  405.         cmGamutResult1Space = $B0C;
  406.  
  407.  
  408.     type
  409.         CMBitmapColorSpace = LONGINT;
  410.  
  411.         CMBitmap = record
  412.                 image: ^CHAR;
  413.                 width: LONGINT;
  414.                 height: LONGINT;
  415.                 rowBytes: LONGINT;
  416.                 pixelSize: LONGINT;
  417.                 space: CMBitmapColorSpace;
  418.                 user1: LONGINT;
  419.                 user2: LONGINT;
  420.             end;
  421.  
  422. { Classic Print Manager Stuff }
  423.  
  424.     const
  425.         enableColorMatchingOp = 12;
  426.         registerProfileOp = 13;
  427.  
  428. { PrGeneral parameter blocks }
  429.  
  430.     type
  431.         TEnableColorMatchingBlk = record
  432.                 iOpCode: INTEGER;
  433.                 iError: INTEGER;
  434.                 lReserved: LONGINT;
  435.                 hPrint: THPrint;
  436.                 fEnableIt: BOOLEAN;
  437.             end;
  438.  
  439.         TRegisterProfileBlk = record
  440.                 iOpCode: INTEGER;
  441.                 iError: INTEGER;
  442.                 lReserved: LONGINT;
  443.                 hPrint: THPrint;
  444.                 fRegisterIt: BOOLEAN;
  445.             end;
  446.  
  447.  
  448.     const
  449.         cmNoProfileBase = 0;
  450.         cmFileBasedProfile = 1;
  451.         cmHandleBasedProfile = 2;
  452.         cmPtrBasedProfile = 3;
  453.  
  454.  
  455.     type
  456.         CMFileLocation = record
  457.                 spec: FSSpec;
  458.             end;
  459.  
  460.         CMHandleLocation = record
  461.                 h: Handle;
  462.             end;
  463.  
  464.         CMPtrLocation = record
  465.                 p: Ptr;
  466.             end;
  467.  
  468.         CMProfLoc = record
  469.                 case INTEGER of
  470.                     0: (
  471.                             fileLoc: CMFileLocation;
  472.                     );
  473.                     1: (
  474.                             handleLoc: CMHandleLocation;
  475.                     );
  476.                     2: (
  477.                             ptrLoc: CMPtrLocation;
  478.                     );
  479.             end;
  480.  
  481.         CMProfileLocation = record
  482.                 locType: INTEGER;
  483.                 u: CMProfLoc;
  484.             end;
  485.  
  486. { Profile file and element access }
  487.  
  488.     function CMOpenProfile (var prof: CMProfileRef; {CONST}
  489.                                     var theProfile: CMProfileLocation): CMError;
  490.     {$IFC NOT GENERATINGCFM}
  491.     inline
  492.         $203C, $0008, $001C, $ABEE;
  493.     {$ENDC}
  494.     function CMCloseProfile (prof: CMProfileRef): CMError;
  495.     {$IFC NOT GENERATINGCFM}
  496.     inline
  497.         $203C, $0004, $001D, $ABEE;
  498.     {$ENDC}
  499.     function CMUpdateProfile (prof: CMProfileRef): CMError;
  500.     {$IFC NOT GENERATINGCFM}
  501.     inline
  502.         $203C, $0004, $0034, $ABEE;
  503.     {$ENDC}
  504.     function CMNewProfile (var prof: CMProfileRef; {CONST}
  505.                                     var theProfile: CMProfileLocation): CMError;
  506.     {$IFC NOT GENERATINGCFM}
  507.     inline
  508.         $203C, $0008, $001B, $ABEE;
  509.     {$ENDC}
  510.     function CMCopyProfile (var targetProf: CMProfileRef; {CONST}
  511.                                     var targetLocation: CMProfileLocation; srcProf: CMProfileRef): CMError;
  512.     {$IFC NOT GENERATINGCFM}
  513.     inline
  514.         $203C, $000C, $0025, $ABEE;
  515.     {$ENDC}
  516.     function CMGetProfileLocation (prof: CMProfileRef; var theProfile: CMProfileLocation): CMError;
  517.     {$IFC NOT GENERATINGCFM}
  518.     inline
  519.         $203C, $0008, $003C, $ABEE;
  520.     {$ENDC}
  521.     function CMValidateProfile (prof: CMProfileRef; var valid: BOOLEAN; var preferredCMMnotfound: BOOLEAN): CMError;
  522.     {$IFC NOT GENERATINGCFM}
  523.     inline
  524.         $203C, $000C, $0026, $ABEE;
  525.     {$ENDC}
  526.     function CMFlattenProfile (prof: CMProfileRef; flags: LONGINT; proc: CMFlattenUPP; refCon: univ Ptr; var preferredCMMnotfound: BOOLEAN): CMError;
  527.     {$IFC NOT GENERATINGCFM}
  528.     inline
  529.         $203C, $0014, $0031, $ABEE;
  530.     {$ENDC}
  531.     function CMUnflattenProfile (var resultFileSpec: FSSpec; proc: CMFlattenUPP; refCon: univ Ptr; var preferredCMMnotfound: BOOLEAN): CMError;
  532.     {$IFC NOT GENERATINGCFM}
  533.     inline
  534.         $203C, $0010, $0032, $ABEE;
  535.     {$ENDC}
  536.     function CMProfileElementExists (prof: CMProfileRef; tag: OSType; var found: BOOLEAN): CMError;
  537.     {$IFC NOT GENERATINGCFM}
  538.     inline
  539.         $203C, $000C, $001E, $ABEE;
  540.     {$ENDC}
  541.     function CMCountProfileElements (prof: CMProfileRef; var elementCount: LONGINT): CMError;
  542.     {$IFC NOT GENERATINGCFM}
  543.     inline
  544.         $203C, $0008, $001F, $ABEE;
  545.     {$ENDC}
  546.     function CMGetProfileElement (prof: CMProfileRef; tag: OSType; var elementSize: LONGINT; elementData: univ Ptr): CMError;
  547.     {$IFC NOT GENERATINGCFM}
  548.     inline
  549.         $203C, $0010, $0020, $ABEE;
  550.     {$ENDC}
  551.     function CMGetProfileHeader (prof: CMProfileRef; var header: CMAppleProfileHeader): CMError;
  552.     {$IFC NOT GENERATINGCFM}
  553.     inline
  554.         $203C, $0008, $0039, $ABEE;
  555.     {$ENDC}
  556.     function CMGetPartialProfileElement (prof: CMProfileRef; tag: OSType; offset: LONGINT; var byteCount: LONGINT; elementData: univ Ptr): CMError;
  557.     {$IFC NOT GENERATINGCFM}
  558.     inline
  559.         $203C, $0014, $0036, $ABEE;
  560.     {$ENDC}
  561.     function CMSetProfileElementSize (prof: CMProfileRef; tag: OSType; elementSize: LONGINT): CMError;
  562.     {$IFC NOT GENERATINGCFM}
  563.     inline
  564.         $203C, $000C, $0038, $ABEE;
  565.     {$ENDC}
  566.     function CMSetPartialProfileElement (prof: CMProfileRef; tag: OSType; offset: LONGINT; byteCount: LONGINT; elementData: univ Ptr): CMError;
  567.     {$IFC NOT GENERATINGCFM}
  568.     inline
  569.         $203C, $0014, $0037, $ABEE;
  570.     {$ENDC}
  571.     function CMGetIndProfileElementInfo (prof: CMProfileRef; index: LONGINT; var tag: OSType; var elementSize: LONGINT; var refs: BOOLEAN): CMError;
  572.     {$IFC NOT GENERATINGCFM}
  573.     inline
  574.         $203C, $0014, $0021, $ABEE;
  575.     {$ENDC}
  576.     function CMGetIndProfileElement (prof: CMProfileRef; index: LONGINT; var elementSize: LONGINT; elementData: univ Ptr): CMError;
  577.     {$IFC NOT GENERATINGCFM}
  578.     inline
  579.         $203C, $0010, $0022, $ABEE;
  580.     {$ENDC}
  581.     function CMSetProfileElement (prof: CMProfileRef; tag: OSType; elementSize: LONGINT; elementData: univ Ptr): CMError;
  582.     {$IFC NOT GENERATINGCFM}
  583.     inline
  584.         $203C, $0010, $0023, $ABEE;
  585.     {$ENDC}
  586.     function CMSetProfileHeader (prof: CMProfileRef; {CONST}
  587.                                     var header: CMAppleProfileHeader): CMError;
  588.     {$IFC NOT GENERATINGCFM}
  589.     inline
  590.         $203C, $0008, $003A, $ABEE;
  591.     {$ENDC}
  592.     function CMSetProfileElementReference (prof: CMProfileRef; elementTag: OSType; referenceTag: OSType): CMError;
  593.     {$IFC NOT GENERATINGCFM}
  594.     inline
  595.         $203C, $000C, $0035, $ABEE;
  596.     {$ENDC}
  597.     function CMRemoveProfileElement (prof: CMProfileRef; tag: OSType): CMError;
  598.     {$IFC NOT GENERATINGCFM}
  599.     inline
  600.         $203C, $0008, $0024, $ABEE;
  601.     {$ENDC}
  602.     function CMGetScriptProfileDescription (prof: CMProfileRef; var name: Str255; var code: ScriptCode): CMError;
  603.     {$IFC NOT GENERATINGCFM}
  604.     inline
  605.         $203C, $000C, $003E, $ABEE;
  606.     {$ENDC}
  607. { Low-level matching functions }
  608.     function NCWNewColorWorld (var cw: CMWorldRef; src: CMProfileRef; dst: CMProfileRef): CMError;
  609.     {$IFC NOT GENERATINGCFM}
  610.     inline
  611.         $203C, $000C, $0014, $ABEE;
  612.     {$ENDC}
  613.     function CWConcatColorWorld (var cw: CMWorldRef; var profileSet: CMConcatProfileSet): CMError;
  614.     {$IFC NOT GENERATINGCFM}
  615.     inline
  616.         $203C, $0008, $0015, $ABEE;
  617.     {$ENDC}
  618.     function CWNewLinkProfile (var prof: CMProfileRef; {CONST}
  619.                                     var targetLocation: CMProfileLocation; var profileSet: CMConcatProfileSet): CMError;
  620.     {$IFC NOT GENERATINGCFM}
  621.     inline
  622.         $203C, $000C, $0033, $ABEE;
  623.     {$ENDC}
  624.     procedure CWDisposeColorWorld (cw: CMWorldRef);
  625.     {$IFC NOT GENERATINGCFM}
  626.     inline
  627.         $203C, $0004, $0001, $ABEE;
  628.     {$ENDC}
  629.     function CWMatchColors (cw: CMWorldRef; var myColors: CMColor; count: LONGINT): CMError;
  630.     {$IFC NOT GENERATINGCFM}
  631.     inline
  632.         $203C, $000C, $0002, $ABEE;
  633.     {$ENDC}
  634.     function CWCheckColors (cw: CMWorldRef; var myColors: CMColor; count: LONGINT; var result: LONGINT): CMError;
  635.     {$IFC NOT GENERATINGCFM}
  636.     inline
  637.         $203C, $0010, $0003, $ABEE;
  638.     {$ENDC}
  639. { Bitmap matching }
  640.     function CWMatchBitmap (cw: CMWorldRef; var bitmap: CMBitmap; progressProc: CMBitmapCallBackUPP; refCon: univ Ptr; var matchedBitmap: CMBitmap): CMError;
  641.     {$IFC NOT GENERATINGCFM}
  642.     inline
  643.         $203C, $0010, $002C, $ABEE;
  644.     {$ENDC}
  645.     function CWCheckBitmap (cw: CMWorldRef; {CONST}
  646.                                     var bitmap: CMBitmap; progressProc: CMBitmapCallBackUPP; refCon: univ Ptr; var resultBitmap: CMBitmap): CMError;
  647.     {$IFC NOT GENERATINGCFM}
  648.     inline
  649.         $203C, $0014, $002D, $ABEE;
  650.     {$ENDC}
  651. { Quickdraw-specific matching }
  652.     function CWMatchPixMap (cw: CMWorldRef; var myPixMap: PixMap; progressProc: CMBitmapCallBackUPP; refCon: univ Ptr): CMError;
  653.     {$IFC NOT GENERATINGCFM}
  654.     inline
  655.         $203C, $0010, $0004, $ABEE;
  656.     {$ENDC}
  657.     function CWCheckPixMap (cw: CMWorldRef; var myPixMap: PixMap; progressProc: CMBitmapCallBackUPP; refCon: univ Ptr; var resultBitMap: BitMap): CMError;
  658.     {$IFC NOT GENERATINGCFM}
  659.     inline
  660.         $203C, $0014, $0007, $ABEE;
  661.     {$ENDC}
  662.     function NCMBeginMatching (src: CMProfileRef; dst: CMProfileRef; var myRef: CMMatchRef): CMError;
  663.     {$IFC NOT GENERATINGCFM}
  664.     inline
  665.         $203C, $000C, $0016, $ABEE;
  666.     {$ENDC}
  667.     procedure CMEndMatching (myRef: CMMatchRef);
  668.     {$IFC NOT GENERATINGCFM}
  669.     inline
  670.         $203C, $0004, $000B, $ABEE;
  671.     {$ENDC}
  672.     procedure NCMDrawMatchedPicture (myPicture: PicHandle; dst: CMProfileRef; var myRect: Rect);
  673.     {$IFC NOT GENERATINGCFM}
  674.     inline
  675.         $203C, $000C, $0017, $ABEE;
  676.     {$ENDC}
  677.     procedure CMEnableMatchingComment (enableIt: BOOLEAN);
  678.     {$IFC NOT GENERATINGCFM}
  679.     inline
  680.         $203C, $0002, $000D, $ABEE;
  681.     {$ENDC}
  682.     function NCMUseProfileComment (prof: CMProfileRef; flags: LONGINT): CMError;
  683.     {$IFC NOT GENERATINGCFM}
  684.     inline
  685.         $203C, $0008, $003B, $ABEE;
  686.     {$ENDC}
  687. { System Profile access }
  688.     function CMGetSystemProfile (var prof: CMProfileRef): CMError;
  689.     {$IFC NOT GENERATINGCFM}
  690.     inline
  691.         $203C, $0004, $0018, $ABEE;
  692.     {$ENDC}
  693.     function CMSetSystemProfile ({CONST}
  694.                                     var profileFileSpec: FSSpec): CMError;
  695.     {$IFC NOT GENERATINGCFM}
  696.     inline
  697.         $203C, $0004, $0019, $ABEE;
  698.     {$ENDC}
  699. { External Profile Management }
  700.     function CMNewProfileSearch (var searchSpec: CMSearchRecord; refCon: univ Ptr; var count: LONGINT; var searchResult: CMProfileSearchRef): CMError;
  701.     {$IFC NOT GENERATINGCFM}
  702.     inline
  703.         $203C, $0010, $0027, $ABEE;
  704.     {$ENDC}
  705.     function CMUpdateProfileSearch (search: CMProfileSearchRef; refCon: univ Ptr; var count: LONGINT): CMError;
  706.     {$IFC NOT GENERATINGCFM}
  707.     inline
  708.         $203C, $000C, $0028, $ABEE;
  709.     {$ENDC}
  710.     procedure CMDisposeProfileSearch (search: CMProfileSearchRef);
  711.     {$IFC NOT GENERATINGCFM}
  712.     inline
  713.         $203C, $0004, $0029, $ABEE;
  714.     {$ENDC}
  715.     function CMSearchGetIndProfile (search: CMProfileSearchRef; index: LONGINT; var prof: CMProfileRef): CMError;
  716.     {$IFC NOT GENERATINGCFM}
  717.     inline
  718.         $203C, $000C, $002A, $ABEE;
  719.     {$ENDC}
  720.     function CMSearchGetIndProfileFileSpec (search: CMProfileSearchRef; index: LONGINT; var profileFile: FSSpec): CMError;
  721.     {$IFC NOT GENERATINGCFM}
  722.     inline
  723.         $203C, $000C, $002B, $ABEE;
  724.     {$ENDC}
  725. { Utilities }
  726.     function CMGetColorSyncFolderSpec (vRefNum: INTEGER; createFolder: BOOLEAN; var foundVRefNum: INTEGER; var foundDirID: LONGINT): CMError;
  727.     {$IFC NOT GENERATINGCFM}
  728.     inline
  729.         $203C, $000C, $0011, $ABEE;
  730.     {$ENDC}
  731.     function CMGetCWInfo (cw: CMWorldRef; var info: CMCWInfoRecord): CMError;
  732.     {$IFC NOT GENERATINGCFM}
  733.     inline
  734.         $203C, $000C, $001A, $ABEE;
  735.     {$ENDC}
  736. { PS-related }
  737.     function CMGetPS2ColorSpace (srcProf: CMProfileRef; flags: LONGINT; proc: CMFlattenUPP; refCon: univ Ptr; var preferredCMMnotfound: BOOLEAN): CMError;
  738.     {$IFC NOT GENERATINGCFM}
  739.     inline
  740.         $203C, $0014, $002E, $ABEE;
  741.     {$ENDC}
  742.     function CMGetPS2ColorRenderingIntent (srcProf: CMProfileRef; flags: LONGINT; proc: CMFlattenUPP; refCon: univ Ptr; var preferredCMMnotfound: BOOLEAN): CMError;
  743.     {$IFC NOT GENERATINGCFM}
  744.     inline
  745.         $203C, $0014, $002F, $ABEE;
  746.     {$ENDC}
  747.     function CMGetPS2ColorRendering (srcProf: CMProfileRef; dstProf: CMProfileRef; flags: LONGINT; proc: CMFlattenUPP; refCon: univ Ptr; var preferredCMMnotfound: BOOLEAN): CMError;
  748.     {$IFC NOT GENERATINGCFM}
  749.     inline
  750.         $203C, $0018, $0030, $ABEE;
  751.     {$ENDC}
  752.     function CMGetPS2ColorRenderingVMSize (srcProf: CMProfileRef; dstProf: CMProfileRef; var vmSize: LONGINT; var preferredCMMnotfound: BOOLEAN): CMError;
  753.     {$IFC NOT GENERATINGCFM}
  754.     inline
  755.         $203C, $0010, $003D, $ABEE;
  756.     {$ENDC}
  757. { ColorSync 1.0 functions which have parallel 2.0 counterparts }
  758.     function CWNewColorWorld (var cw: CMWorldRef; src: CMProfileHandle; dst: CMProfileHandle): CMError;
  759.     {$IFC NOT GENERATINGCFM}
  760.     inline
  761.         $203C, $000C, $0000, $ABEE;
  762.     {$ENDC}
  763.     function ConcatenateProfiles (thru: CMProfileHandle; dst: CMProfileHandle; var newDst: CMProfileHandle): CMError;
  764.     {$IFC NOT GENERATINGCFM}
  765.     inline
  766.         $203C, $000C, $000C, $ABEE;
  767.     {$ENDC}
  768.     function CMBeginMatching (src: CMProfileHandle; dst: CMProfileHandle; var myRef: CMMatchRef): CMError;
  769.     {$IFC NOT GENERATINGCFM}
  770.     inline
  771.         $203C, $000C, $000A, $ABEE;
  772.     {$ENDC}
  773.     procedure CMDrawMatchedPicture (myPicture: PicHandle; dst: CMProfileHandle; var myRect: Rect);
  774.     {$IFC NOT GENERATINGCFM}
  775.     inline
  776.         $203C, $000C, $0009, $ABEE;
  777.     {$ENDC}
  778.     function CMUseProfileComment (profile: CMProfileHandle): CMError;
  779.     {$IFC NOT GENERATINGCFM}
  780.     inline
  781.         $203C, $0004, $0008, $ABEE;
  782.     {$ENDC}
  783.     procedure CMGetProfileName (myProfile: CMProfileHandle; var IStringResult: CMIString);
  784.     {$IFC NOT GENERATINGCFM}
  785.     inline
  786.         $203C, $0008, $000E, $ABEE;
  787.     {$ENDC}
  788.     function CMGetProfileAdditionalDataOffset (myProfile: CMProfileHandle): LONGINT;
  789.     {$IFC NOT GENERATINGCFM}
  790.     inline
  791.         $203C, $0004, $000F, $ABEE;
  792.     {$ENDC}
  793. { ProfileResponder functions }
  794.     function GetProfile (deviceType: OSType; refNum: LONGINT; aProfile: CMProfileHandle; var returnedProfile: CMProfileHandle): CMError;
  795.     {$IFC NOT GENERATINGCFM}
  796.     inline
  797.         $203C, $0010, $0005, $ABEE;
  798.     {$ENDC}
  799.     function SetProfile (deviceType: OSType; refNum: LONGINT; newProfile: CMProfileHandle): CMError;
  800.     {$IFC NOT GENERATINGCFM}
  801.     inline
  802.         $203C, $000C, $0006, $ABEE;
  803.     {$ENDC}
  804.     function SetProfileDescription (deviceType: OSType; refNum: LONGINT; deviceData: LONGINT; hProfile: CMProfileHandle): CMError;
  805.     {$IFC NOT GENERATINGCFM}
  806.     inline
  807.         $203C, $0010, $0010, $ABEE;
  808.     {$ENDC}
  809.     function GetIndexedProfile (deviceType: OSType; refNum: LONGINT; search: CMProfileSearchRecordHandle; var returnProfile: CMProfileHandle; var index: LONGINT): CMError;
  810.     {$IFC NOT GENERATINGCFM}
  811.     inline
  812.         $203C, $0014, $0012, $ABEE;
  813.     {$ENDC}
  814.     function DeleteDeviceProfile (deviceType: OSType; refNum: LONGINT; deleteMe: CMProfileHandle): CMError;
  815.     {$IFC NOT GENERATINGCFM}
  816.     inline
  817.         $203C, $000C, $0013, $ABEE;
  818.     {$ENDC}
  819. {$IFC OLDROUTINENAMES }
  820.  
  821.     const
  822.         kMatchCMMType = cmMatchCMMType;
  823.         kMatchApplProfileVersion = cmMatchApplProfileVersion;
  824.         kMatchDataType = cmMatchDataType;
  825.         kMatchDeviceType = cmMatchDeviceType;
  826.         kMatchDeviceManufacturer = cmMatchDeviceManufacturer;
  827.         kMatchDeviceModel = cmMatchDeviceModel;
  828.         kMatchDeviceAttributes = cmMatchDeviceAttributes;
  829.         kMatchFlags = cmMatchFlags;
  830.         kMatchOptions = cmMatchOptions;
  831.         kMatchWhite = cmMatchWhite;
  832.         kMatchBlack = cmMatchBlack;
  833.  
  834. { types }
  835.  
  836.     type
  837.         CMYKColor = CMCMYKColor;
  838.  
  839.         CWorld = CMWorldRef;
  840.  
  841.         CMGamutResult = ^LONGINT;
  842.  
  843. { functions }
  844.  
  845.     procedure EndMatching (myRef: CMMatchRef);
  846.     {$IFC NOT GENERATINGCFM}
  847.     inline
  848.         $203C, $0004, $000B, $ABEE;
  849.     {$ENDC}
  850.     procedure EnableMatching (enableIt: BOOLEAN);
  851.     {$IFC NOT GENERATINGCFM}
  852.     inline
  853.         $203C, $0002, $000D, $ABEE;
  854.     {$ENDC}
  855.     function GetColorSyncFolderSpec (vRefNum: INTEGER; createFolder: BOOLEAN; var foundVRefNum: INTEGER; var foundDirID: LONGINT): CMError;
  856.     {$IFC NOT GENERATINGCFM}
  857.     inline
  858.         $203C, $000C, $0011, $ABEE;
  859.     {$ENDC}
  860.     function BeginMatching (src: CMProfileHandle; dst: CMProfileHandle; var myRef: CMMatchRef): CMError;
  861.     {$IFC NOT GENERATINGCFM}
  862.     inline
  863.         $203C, $000C, $000A, $ABEE;
  864.     {$ENDC}
  865.     procedure DrawMatchedPicture (myPicture: PicHandle; dst: CMProfileHandle; var myRect: Rect);
  866.     {$IFC NOT GENERATINGCFM}
  867.     inline
  868.         $203C, $000C, $0009, $ABEE;
  869.     {$ENDC}
  870.     function UseProfile (profile: CMProfileHandle): CMError;
  871.     {$IFC NOT GENERATINGCFM}
  872.     inline
  873.         $203C, $0004, $0008, $ABEE;
  874.     {$ENDC}
  875.     procedure GetProfileName (myProfile: CMProfileHandle; var IStringResult: CMIString);
  876.     {$IFC NOT GENERATINGCFM}
  877.     inline
  878.         $203C, $0008, $000E, $ABEE;
  879.     {$ENDC}
  880.     function GetProfileAdditionalDataOffset (myProfile: CMProfileHandle): LONGINT;
  881.     {$IFC NOT GENERATINGCFM}
  882.     inline
  883.         $203C, $0004, $000F, $ABEE;
  884.     {$ENDC}
  885. {$ENDC}
  886.  
  887. { $ALIGN RESET}
  888. { $POP}
  889.  
  890. {$ENDC}
  891.  {__CMAPPLICATION__}
  892.  
  893. implementation
  894. end.
  895.